package com.linx.common.core.utils;


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
/***
 * @ClassName UniqueNumberGenerator
 * @Description TODO
 * @Author gushaoliang
 * @Date 2024/11/16 下午5:45
 * @Version 1.0
 */

public class UniqueNumberGenerator {

    // 时间格式化模板
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss");

    // 随机数生成器
    private static final Random RANDOM = new Random();

    /**
     * 生成唯一编号
     * @param prefix 编号前缀（如订单类型、业务标识等）
     * @param randomLength 随机数的长度
     * @return 生成的唯一编号
     */
    public static String generateUniqueNumber(String prefix, int randomLength) {
        if (randomLength < 1) {
            throw new IllegalArgumentException("随机数长度必须大于 0");
        }

        // 获取当前时间戳
        String timestamp = DATE_FORMAT.format(new Date());

        // 生成指定长度的随机数
        StringBuilder randomPart = new StringBuilder();
        for (int i = 0; i < randomLength; i++) {
            randomPart.append(RANDOM.nextInt(10)); // 生成 0-9 的随机数字
        }

        // 拼接编号
        return prefix + timestamp + randomPart;
    }

    /**
     * 测试工具类
     */
    public static void main(String[] args) {
        // 示例：订单编号以 "ORD" 开头，随机数长度为 6
        String orderNumber = UniqueNumberGenerator.generateUniqueNumber("ORD", 6);
        System.out.println("订单编号：" + orderNumber);

        // 示例：用户编号以 "USR" 开头，随机数长度为 4
        String userNumber = UniqueNumberGenerator.generateUniqueNumber("USR", 4);
        System.out.println("用户编号：" + userNumber);
    }
}
